package demo;

import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.*;

import java.util.stream.Stream;

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)//按照指定的顺序执行
//@TestMethodOrder(MethodOrderer.Random.class)//按照随机顺序执行测试用例
public class JunitTest02 {
    public static Stream<Arguments> Generator() {
        return Stream.of(Arguments.arguments("1，小张","2，小李"));
    }

    @Order(5)
    @Test
    void test01(){
        System.out.println("test01");
    }
    @Order(4)
    @Test
    void test02(){
        System.out.println("test02");
    }
    @Order(3)
    @Test
    void test03(){
        System.out.println("test03");
    }
    @Order(2)
    @Test
    void test04(){
        System.out.println("test04");
    }
    @Order(1)
    @Test
    void test05(){
        System.out.println("test05");
    }
  //参数化：单参数
    @ParameterizedTest //参数测试
    @ValueSource( booleans = {true,false,true}) //单参数 每个参数都会执行一遍方法
    void test07(Boolean str){
        System.out.println(str);
    }

    //参数化：多参数
    @ParameterizedTest //参数测试
    @CsvSource({"1,3", "2,4"})//第一个是String类型 第二个是int类型
    void test08(String str,int num){
        System.out.println(str+" "+num);
    }

     @ParameterizedTest//参数测试
     @CsvFileSource(resources = "test09.csv") //参数来自csv文件
     void test09(int id,String str){
        System.out.println(id+" ,"+str);
    }
    //在传入之前先对参数进行处理
    @ParameterizedTest
    @MethodSource("Generator")
    void test10(String id,String str){
        System.out.println(id+" "+str);
    }
//断言
    @ParameterizedTest
    @ValueSource(ints ={10})
    void test11(int num){
        Assertions.assertEquals(num,10);//断言相等
        Assertions.assertNotEquals(num,11);//断言不相等
      //  Assertions.assertNull(num);//断言为空
        Assertions.assertNotNull(num);//断言不为空

    }
}
